<?php

namespace longhu\library\redis;

trait Instruct
{
    /**
     * rPush 在队列尾部插入一个元素
     * @param $key
     * @param $value
     * @return mixed 返回队列长度
     */
    public function rPush($key,$value)
    {
        return $this->redis->rPush($key,$value);
    }

    /**
     * rPushx 在队列尾部插入一个元素 如果key不存在，什么也不做
     * @param $key
     * @param $value
     * @return mixed 返回队列长度
     */
    public function rPushx($key,$value)
    {
        return $this->redis->rPushx($key,$value);
    }

    /**
     * lPush 在队列头部插入一个元素
     * @param $key
     * @param $value
     * @return mixed 返回队列长度
     */
    public function lPush($key,$value)
    {
        return $this->redis->lPush($key,$value);
    }

    /**
     * lPushx 在队列头插入一个元素 如果key不存在，什么也不做
     * @param $key
     * @param $value
     * @return mixed 返回队列长度
     */
    public function lPushx($key,$value)
    {
        return $this->redis->lPushx($key,$value);
    }

    /**
     * lLen 返回队列长度
     * @param $key
     * @return mixed
     */
    public function lLen($key)
    {
        return $this->redis->lLen($key);
    }

    /**
     * lRange 返回队列指定区间的元素
     * @param $key
     * @param $start
     * @param $end
     * @return mixed
     */
    public function lRange($key,$start,$end)
    {
        return $this->redis->lrange($key,$start,$end);
    }

    /**
     * lIndex 返回队列中指定索引的元素
     * Created by PhpStorm.
     * User: w
     * Date: 2018-12-09
     * Time: 12:13
     * @param $key
     * @param $index
     * @return mixed
     */
    public function lIndex($key,$index)
    {
        return $this->redis->lIndex($key,$index);
    }

    /**
     * lSet 设定队列中指定index的值。
     * @param $key
     * @param $index
     * @param $value
     * @return mixed
     */
    public function lSet($key,$index,$value)
    {
        return $this->redis->lSet($key,$index,$value);
    }

    /**
     * lRem 删除值为value的count个元素
     * PHP-REDIS扩展的数据顺序与命令的顺序不太一样，不知道是不是bug
     * count>0 从尾部开始
     *  >0　从头部开始
     *  =0　删除全部
     * @param $key
     * @param $count
     * @param $value
     * @return mixed
     */
    public function lRem($key,$count,$value)
    {
        return $this->redis->lRem($key,$value,$count);
    }

    /**
     * lPop 删除并返回队列中的头元素
     * Created by PhpStorm.
     * User: w
     * Date: 2018-12-09
     * Time: 12:13
     * @param $key
     * @return mixed
     */
    public function lPop($key)
    {
        return $this->redis->lPop($key);
    }

    /**
     * rPop 删除并返回队列中的尾元素
     * @param $key
     * @return mixed
     */
    public function rPop($key)
    {
        return $this->redis->rPop($key);
    }
}